package org.mobilesynergies.android.epic.service.interfaces;

import org.mobilesynergies.android.epic.service.interfaces.IServiceStatusChangeCallback;
import org.mobilesynergies.android.epic.service.interfaces.IApplicationStatusChangeCallback;
import org.mobilesynergies.android.epic.service.interfaces.IIncomingMessageCallback;
import org.mobilesynergies.android.epic.service.interfaces.IRemoteCommandCallback;

interface IEpicServiceApplicationInterface {
	
		int getVersion();
		
		String bindApplication(in String applicationKey, in String applicationPassword, in String applicationManifest);
		
		void registerServiceStatusChangeCallback(in IServiceStatusChangeCallback callback);
		
		void registerApplicationStatusChangeCallback(in String sessionKey, in IApplicationStatusChangeCallback callback);
		
		String getSessionToken(in String sessionKey, in String applicationNodeId);
		 
		void listenForMessages(in String sessionToken, in IIncomingMessageCallback messageCallback, in String publisherId);
		
		void stopListening(in String sessionToken);
		
		void sendMessage(in String sessionToken, in Bundle object);
		
		Bundle requestResponse(in String sessionToken, in Bundle object);
		
		void registerPublicCommand(in String sessionToken, in IRemoteCommandCallback cb);
		
	}